如何在 SPSS 中计算年龄?

作者:Ruben Geert van den Berg,发表于 SPSS 博客

本教程将介绍如何在 SPSS (Statistical Product and Service Solutions) 中使用出生日期计算年龄。

一个课程由 183 名学生进行评估。数据存储在 course_evaluation.sav 文件中,部分数据如下所示。老师想知道学生的平均年龄,但我们只有他们的出生日期。

SPSS Compute Age Variable View

1. 确保出生日期是日期变量

首先,我们需要检查出生日期是否为真正的日期变量 (date variable)。在变量视图 (variable view)中,我们可以很容易地看到这里的情况正是如此。有时,日期在 SPSS 中最终会变成字符串变量 (string variable),如果是这样,我们需要先将它们转换为日期变量。有关如何执行此操作的一些示例,请参见 将字符串转换为日期变量 (Convert String to Date Variable)

2. 选择比较日期

由于(平均)年龄实际上每秒都在变化,我们需要回答“在哪个时间点的年龄?” 最明显的选择是数据收集时的年龄。您的数据中可能存在这样的完成日期。如果没有,我们将进行有根据的猜测。

3. 使用已知完成日期计算年龄

我们的数据包含一个名为 cdate 的变量,其中包含问卷的完成日期。我们现在可以使用以下语法轻松计算年龄,并且我们将检查其直方图以确保结果具有合理的分布。

***如果已知完成日期,则计算年龄。**
compute age = datediff(cdate,bdate,'days') / 365.25.

***检查结果是否具有合理的分布。**
frequencies age
/format notable
/histogram.

***所有年龄在 19 岁到 27 岁之间。看起来很完美。**

结果

SPSS Compute Age Example

所以我们基本上计算了出生日期和完成日期之间的天数,然后将其除以 365.25,这是一年中的平均天数。您可能想知道为什么我们不直接使用 DATEDIFF(cdate,bdate,'years')。我们将在稍后讨论。

4. 使用未知完成日期计算年龄

如果我们的数据中没有完成日期,我们将尝试做出一个好的猜测。假设我们猜测是 2015 年 1 月 1 日。我们可以使用 date.dmy(1,1,2015) 将其转换为 SPSS 日期值,从而在我们的数据集中创建一个猜测的完成日期作为新变量。或者,我们可以将此函数直接插入到我们的年龄计算公式中,如下所示。

***如果必须猜测完成日期,则计算年龄。**
compute age2 = datediff(date.dmy(1,1,2015),bdate,'days') / 365.25.
execute.

天或年?

那么,为什么我们要提取天数并将其除以 365.25,这是一年中的平均天数?简单的原因是 SPSS 会截断 DATEDIFF 的结果。这意味着一个 20 岁零 364 天的人将被分配一个 20.00 岁的年龄,这几乎差了整整一年。

***计算年龄 - 错误的方法。**
compute age3 = datediff(cdate,bdate,'years').
execute.

结果

SPSS Compute Age Wrong Way

这可能使您确信直接提取年份不是一个好主意:平均而言,我们这样做会 低估 年龄半年。为了简单起见,我们将假设生日在一年中均匀分布,我认为这大致成立。

最后的说明

如果您不想看到任何小数位,那么最好的选择可能是运行 formats age (f3).,这将_显示_所有年龄为整数。或者,如果您希望年龄_是_整数,您可以运行 compute age = rnd(age).,但这显然会引入一些误差 - 不好,但不如前面提到的偏差那么糟糕。